package blue_bridge_cup_learning.差分;

// 小蓝有 20230610 颗磁力弹珠，他对金字塔形状尤其感兴趣，如下图所示：
// 高度为 1 1 的金字塔需要 1 1 颗弹珠；
// 高度为 2 2 的金字塔需要 4 4 颗弹珠；
// 高度为 3 3 的金字塔需要 10 10 颗弹珠；
// 高度为 4 4 的金字塔需要 20 20 颗弹珠。
// 小蓝想要知道用他手里的弹珠可以摆出的最高的金字塔的高度是多少？
public class 弹珠堆放 {
    public static void main(String[] args) {
        int marbles = 20230610; // 使用long避免可能的整数溢出
        int height = 0; // 金字塔当前高度
        long layer = 1; // 当前层需要的弹珠数

        while (marbles >= layer) {
            marbles -= layer; // 减去当前层需要的弹珠
            height++; // 高度加1
            layer += height + 1; // 计算下一层需要的弹珠数
        }
        System.out.println(height);
    }
}
